using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkAnalystTools._TurnFeatureClass
{
    /// <summary>
    /// <para>Increase Maximum Edges</para>
    /// <para>Increases the maximum number of edges per turn in a turn feature class.</para>
    /// <para>增加转弯要素类中每圈的最大边数。</para>
    /// </summary>    
    [DisplayName("Increase Maximum Edges")]
    public class IncreaseMaximumEdges : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public IncreaseMaximumEdges()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_turn_features">
        /// <para>Input Turn Feature Class</para>
        /// <para>The turn feature class that is having its maximum number of edges raised.</para>
        /// <para>已提升最大边数的转弯要素类。</para>
        /// </param>
        /// <param name="_maximum_edges">
        /// <para>Maximum Edges</para>
        /// <para>The new maximum number of edges in the input turn feature class. The value must be at least one higher than the existing maximum number of edges and cannot be greater than 50.</para>
        /// <para>输入转弯要素类中新的最大边数。该值必须至少比现有最大边数高 1，并且不能大于 50。</para>
        /// </param>
        public IncreaseMaximumEdges(object _in_turn_features, long? _maximum_edges)
        {
            this._in_turn_features = _in_turn_features;
            this._maximum_edges = _maximum_edges;
        }
        public override string ToolboxName => "Network Analyst Tools";

        public override string ToolName => "Increase Maximum Edges";

        public override string CallName => "na.IncreaseMaximumEdges";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_turn_features, _maximum_edges, _out_turn_features];

        /// <summary>
        /// <para>Input Turn Feature Class</para>
        /// <para>The turn feature class that is having its maximum number of edges raised.</para>
        /// <para>已提升最大边数的转弯要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Turn Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_turn_features { get; set; }


        /// <summary>
        /// <para>Maximum Edges</para>
        /// <para>The new maximum number of edges in the input turn feature class. The value must be at least one higher than the existing maximum number of edges and cannot be greater than 50.</para>
        /// <para>输入转弯要素类中新的最大边数。该值必须至少比现有最大边数高 1，并且不能大于 50。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Edges")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long? _maximum_edges { get; set; }


        /// <summary>
        /// <para>Updated Input Turn Feature Class</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Input Turn Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_turn_features { get; set; }


        public IncreaseMaximumEdges SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}